{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# HW4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pickle as p\n",
    "\n",
    "import numpy as np\n",
    "\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 提取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "#读入处理过的数据\n",
    "\n",
    "#每个用户参加的活动   / 每个活动参加的用户\n",
    "eventsForUser=p.load(open('PE_eventsForUser.pkl','rb'))\n",
    "usersForEvent=p.load(open('PE_usersForEvent.pkl','rb'))\n",
    "#用户和活动的索引\n",
    "userIndex=p.load(open('PE_userIndex.pkl','rb'))\n",
    "eventIndex=p.load(open('PE_eventIndex.pkl','rb'))\n",
    "#关联的用户 或者 关联的event\n",
    "uniqueUserPairs=p.load(open('FE_uniqueUserPairs.pkl','rb'))\n",
    "uniqueEventPairs=p.load(open('PE_uniqueEventPairs.pkl','rb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "#new_userIndex = {v : k for k, v in userIndex.items()}# 将user索引反转"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "#根据索引和相关关系取出events里面和train，test相关的数据\n",
    "fevents=open('events.csv','rb')\n",
    "colums=fevents.readline().decode().strip().split(\",\")\n",
    "data=[]\n",
    "# for line in fevents:\n",
    "#     cols = line.decode().strip().split(\",\")\n",
    "#     if cols[0] in eventIndex.keys():\n",
    "#         if cols[1] in userIndex.keys():\n",
    "#             if userIndex[cols[1]] in usersForEvent[eventIndex[cols[0]]]:\n",
    "#                 data.append(cols)\n",
    "#data\n",
    "\n",
    "#是不是只要event_id对上就行了额，两个都对上只能搜到5行\n",
    "for line in fevents:\n",
    "    cols = line.decode().strip().split(\",\")\n",
    "    if cols[0] in eventIndex.keys():\n",
    "        data.append(cols)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "train=pd.DataFrame(data,columns=colums)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>event_id</th>\n",
       "      <th>user_id</th>\n",
       "      <th>start_time</th>\n",
       "      <th>city</th>\n",
       "      <th>state</th>\n",
       "      <th>zip</th>\n",
       "      <th>country</th>\n",
       "      <th>lat</th>\n",
       "      <th>lng</th>\n",
       "      <th>c_1</th>\n",
       "      <th>...</th>\n",
       "      <th>c_92</th>\n",
       "      <th>c_93</th>\n",
       "      <th>c_94</th>\n",
       "      <th>c_95</th>\n",
       "      <th>c_96</th>\n",
       "      <th>c_97</th>\n",
       "      <th>c_98</th>\n",
       "      <th>c_99</th>\n",
       "      <th>c_100</th>\n",
       "      <th>c_other</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>684921758</td>\n",
       "      <td>3647864012</td>\n",
       "      <td>2012-10-31T00:00:00.001Z</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>244999119</td>\n",
       "      <td>3476440521</td>\n",
       "      <td>2012-11-03T00:00:00.001Z</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3928440935</td>\n",
       "      <td>517514445</td>\n",
       "      <td>2012-11-05T00:00:00.001Z</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2582345152</td>\n",
       "      <td>781585781</td>\n",
       "      <td>2012-10-30T00:00:00.001Z</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1051165850</td>\n",
       "      <td>1016098580</td>\n",
       "      <td>2012-09-27T00:00:00.001Z</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 110 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     event_id     user_id                start_time city state zip country  \\\n",
       "0   684921758  3647864012  2012-10-31T00:00:00.001Z                          \n",
       "1   244999119  3476440521  2012-11-03T00:00:00.001Z                          \n",
       "2  3928440935   517514445  2012-11-05T00:00:00.001Z                          \n",
       "3  2582345152   781585781  2012-10-30T00:00:00.001Z                          \n",
       "4  1051165850  1016098580  2012-09-27T00:00:00.001Z                          \n",
       "\n",
       "  lat lng c_1   ...   c_92 c_93 c_94 c_95 c_96 c_97 c_98 c_99 c_100 c_other  \n",
       "0           2   ...      0    1    0    0    0    0    0    0     0       9  \n",
       "1           2   ...      0    0    0    0    0    0    0    0     0       7  \n",
       "2           0   ...      0    0    0    0    0    0    0    0     0      12  \n",
       "3           1   ...      0    0    0    0    0    0    0    0     0       8  \n",
       "4           1   ...      0    0    0    0    0    0    0    0     0       9  \n",
       "\n",
       "[5 rows x 110 columns]"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 13418 entries, 0 to 13417\n",
      "Columns: 101 entries, c_1 to c_other\n",
      "dtypes: object(101)\n",
      "memory usage: 10.3+ MB\n"
     ]
    }
   ],
   "source": [
    "#根据题意只留下train和test下的c1～c_other的数据\n",
    "dr=['event_id','user_id','start_time','city','state','zip','country','lat','lng']\n",
    "train=train.drop(dr,axis=1)\n",
    "train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>c_1</th>\n",
       "      <th>c_2</th>\n",
       "      <th>c_3</th>\n",
       "      <th>c_4</th>\n",
       "      <th>c_5</th>\n",
       "      <th>c_6</th>\n",
       "      <th>c_7</th>\n",
       "      <th>c_8</th>\n",
       "      <th>c_9</th>\n",
       "      <th>c_10</th>\n",
       "      <th>...</th>\n",
       "      <th>c_92</th>\n",
       "      <th>c_93</th>\n",
       "      <th>c_94</th>\n",
       "      <th>c_95</th>\n",
       "      <th>c_96</th>\n",
       "      <th>c_97</th>\n",
       "      <th>c_98</th>\n",
       "      <th>c_99</th>\n",
       "      <th>c_100</th>\n",
       "      <th>c_other</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>33</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>354</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>2</td>\n",
       "      <td>8</td>\n",
       "      <td>11</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>120</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>28</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13388</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13389</th>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>163</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13390</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13391</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13392</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13393</th>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>66</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13394</th>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13395</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13396</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13397</th>\n",
       "      <td>10</td>\n",
       "      <td>9</td>\n",
       "      <td>12</td>\n",
       "      <td>12</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>187</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13398</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13399</th>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13400</th>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13401</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13402</th>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13403</th>\n",
       "      <td>13</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>21</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>366</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13404</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>121</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13405</th>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>209</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13406</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13407</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13408</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>83</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13409</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>29</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13410</th>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13411</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13412</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13413</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13414</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13415</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13416</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13417</th>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>14</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>132</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>13418 rows × 101 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      c_1 c_2  c_3  c_4 c_5  c_6 c_7 c_8 c_9 c_10   ...   c_92 c_93 c_94 c_95  \\\n",
       "0       2   0    2    0   0    0   0   0   0    0   ...      0    1    0    0   \n",
       "1       2   0    2    0   0    0   0   0   0    0   ...      0    0    0    0   \n",
       "2       0   0    0    0   0    0   0   0   0    0   ...      0    0    0    0   \n",
       "3       1   0    2    1   0    0   0   0   0    0   ...      0    0    0    0   \n",
       "4       1   1    0    0   0    0   0   2   0    0   ...      0    0    0    0   \n",
       "5       0   0    0    0   0    0   0   0   0    0   ...      0    0    0    0   \n",
       "6       0   0    0    1   0    0   0   0   0    0   ...      0    0    0    0   \n",
       "7       0   0    2    0   0   33   0   3   1    0   ...      2    0    0    0   \n",
       "8       0   0    0    0   0    0   0   0   0    0   ...      0    0    0    0   \n",
       "9       1   0    1    0   1    0   0   0   0    0   ...      0    0    0    0   \n",
       "10      0   0    0    3   0    0   0   0   0    0   ...      0    0    0    0   \n",
       "11      1   1    0    0   0    0   0   2   0    0   ...      0    0    0    0   \n",
       "12      1   3    1    1   0    0   2   0   0    0   ...      0    0    0    0   \n",
       "13      1   1    2    1   0    0   1   0   0    0   ...      0    0    0    0   \n",
       "14      2   8   11    3   2    1   2   2   0    2   ...      0    1    1    0   \n",
       "15      1   1    0    0   0    0   0   2   0    0   ...      0    0    0    0   \n",
       "16      1   0    0    1   0    0   0   0   0    0   ...      0    0    1    0   \n",
       "17      0   0    2    2   0    0   0   1   0    0   ...      0    0    1    0   \n",
       "18      0   1    0    0   0   28   0   0   0    0   ...      0    0    0    0   \n",
       "19      0   1    0    0   0    0   0   2   0    0   ...      0    0    2    0   \n",
       "20      0   0    0    1   0    1   2   0   0    1   ...      0    0    1    0   \n",
       "21      1   0    3    0   1    0   1   0   0    0   ...      1    0    0    0   \n",
       "22      1   0    1    1   0    0   0   0   0    0   ...      0    0    0    0   \n",
       "23      0   1    0    0   0    0   0   2   0    0   ...      0    0    2    0   \n",
       "24      0   1    0    0   0    0   0   2   0    0   ...      0    0    2    0   \n",
       "25      0   0    0    0   0    0   0   0   0    0   ...      0    0    0    0   \n",
       "26      3   2    3    0   0    0   2   4   0    1   ...      0    0    0    0   \n",
       "27      1   0    1    1   0    1   0   0   0    0   ...      0    0    0    0   \n",
       "28      1   0    2    1   0    0   0   0   0    0   ...      0    0    0    0   \n",
       "29      0   1    0    0   0    0   0   2   0    0   ...      0    0    2    0   \n",
       "...    ..  ..  ...  ...  ..  ...  ..  ..  ..  ...   ...    ...  ...  ...  ...   \n",
       "13388   3   1    1    1   0    0   0   1   1    0   ...      0    0    0    0   \n",
       "13389  13   6    7    9   7    1   2   7   6    3   ...      0    0    0    0   \n",
       "13390   0   0    0    0   0    3   0   0   0    0   ...      0    0    0    0   \n",
       "13391   0   0    0    0   0    0   0   0   0    0   ...      0    0    0    0   \n",
       "13392   1   1    0    0   1    0   0   1   0    0   ...      1    0    0    0   \n",
       "13393   5   1    7    1   2    1   1   1   1    1   ...      0    0    0    1   \n",
       "13394   9   0    0    0   0    0   2   0   0    0   ...      0    0    0    0   \n",
       "13395   4   1    2    1   1    0   1   2   5    0   ...      1    0    0    0   \n",
       "13396   0   0    0    0   0    0   0   0   0    0   ...      0    0    0    0   \n",
       "13397  10   9   12   12   4    0   2   9   0    3   ...      4    2    2    1   \n",
       "13398   1   1    1    0   0    0   0   1   0    1   ...      0    0    1    1   \n",
       "13399   3   5    2    5   3    1   1   1   0    2   ...      0    1    1    0   \n",
       "13400   7   2    3    3   5    0   0   0   1    1   ...      0    0    0    1   \n",
       "13401   1   2    1    1   0    0   0   0   0    1   ...      0    0    0    0   \n",
       "13402   2   0    3    1   0    0   1   0   0    0   ...      0    0    0    0   \n",
       "13403  13   1    4    0   1   21   3   0   0    2   ...      0    0    1    0   \n",
       "13404   6   3    2    1   2    4   5   1   1    2   ...      0    0    0    0   \n",
       "13405   3   0    2    6   3    7   4   2   2    2   ...      0    0    0    0   \n",
       "13406   0   0    0    0   0    0   0   0   0    0   ...      0    0    0    0   \n",
       "13407   0   0    0    0   0    0   0   0   0    0   ...      0    0    0    0   \n",
       "13408   1   0    2    0   1    1   2   0   0    1   ...      0    1    0    1   \n",
       "13409   1   3    0    0   2    0   1   0   0    1   ...      0    0    0    0   \n",
       "13410   4   6    3    4   1    0   1   2   0    0   ...      1    0    0    0   \n",
       "13411   0   0    0    0   0    0   0   0   0    0   ...      0    0    0    0   \n",
       "13412   1   1    2    0   0    0   1   0   3    1   ...      0    0    0    0   \n",
       "13413   0   0    0    0   0    0   0   0   0    0   ...      0    0    0    0   \n",
       "13414   0   0    0    0   0    0   0   0   0    0   ...      0    0    0    0   \n",
       "13415   0   1    0    0   0    0   0   0   1    0   ...      0    0    0    0   \n",
       "13416   0   0    0    0   0    0   0   0   0    0   ...      0    0    0    0   \n",
       "13417   6   1    2    0   3   14   0   0   1    1   ...      0    0    0    0   \n",
       "\n",
       "      c_96 c_97 c_98 c_99 c_100 c_other  \n",
       "0        0    0    0    0     0       9  \n",
       "1        0    0    0    0     0       7  \n",
       "2        0    0    0    0     0      12  \n",
       "3        0    0    0    0     0       8  \n",
       "4        0    0    0    0     0       9  \n",
       "5        0    0    0    0     0      22  \n",
       "6        0    0    0    0     0      28  \n",
       "7        0    0    0    0     0     354  \n",
       "8        0    0    0    1     0      25  \n",
       "9        0    0    0    0     0       3  \n",
       "10       0    0    0    0     0      38  \n",
       "11       0    0    0    0     0       9  \n",
       "12       0    0    0    0     0      36  \n",
       "13       0    1    0    0     1      15  \n",
       "14       0    0    0    0     0     120  \n",
       "15       0    0    0    0     0       9  \n",
       "16       0    0    0    0     0       7  \n",
       "17       0    0    0    0     0       8  \n",
       "18       0    0    0    0     0      90  \n",
       "19       0    0    0    0     0       6  \n",
       "20       0    0    0    0     0      17  \n",
       "21       0    0    0    0     0       7  \n",
       "22       0    0    0    0     0       9  \n",
       "23       0    0    0    0     0       6  \n",
       "24       0    0    0    0     0       6  \n",
       "25       0    0    0    0     0       4  \n",
       "26       0    0    0    0     0      28  \n",
       "27       0    0    0    0     0       9  \n",
       "28       0    0    0    0     0      10  \n",
       "29       0    0    0    0     0       6  \n",
       "...    ...  ...  ...  ...   ...     ...  \n",
       "13388    0    1    0    0     0      50  \n",
       "13389    0    0    0    7     1     163  \n",
       "13390    0    0    0    0     0     108  \n",
       "13391    0    0    0    0     0       2  \n",
       "13392    0    0    0    0     0      22  \n",
       "13393    0    0    0    0     0      66  \n",
       "13394    0    0    0    0     0      88  \n",
       "13395    0    0    0    0     0      39  \n",
       "13396    0    0    0    0     0      24  \n",
       "13397    0    2    3    0     0     187  \n",
       "13398    0    0    0    0     0      30  \n",
       "13399    0    0    0    0     0      59  \n",
       "13400    0    0    0    1     0      43  \n",
       "13401    0    0    1    0     0      16  \n",
       "13402    0    0    1    0     0      17  \n",
       "13403    0    0    1    0     0     366  \n",
       "13404    0    0    0    1     1     121  \n",
       "13405    0    0    1    0     0     209  \n",
       "13406    0    0    0    0     0       4  \n",
       "13407    0    0    0    0     0       9  \n",
       "13408    0    0    0    0     1      83  \n",
       "13409    0    0    0    0     0      29  \n",
       "13410    0    0    0    0     1      65  \n",
       "13411    0    0    0    0     0      28  \n",
       "13412    0    0    0    0     0      18  \n",
       "13413    0    0    0    0     0       4  \n",
       "13414    0    0    0    0     0       7  \n",
       "13415    0    0    0    0     0      10  \n",
       "13416    0    0    0    0     0       6  \n",
       "13417    0    0    0    0     0     132  \n",
       "\n",
       "[13418 rows x 101 columns]"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#假设有缺失值的话，将缺失值用0代替\n",
    "train.fillna(value=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 聚类MiniBatch K-Means"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.cluster import MiniBatchKMeans\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn import metrics\n",
    "\n",
    "import time\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "def K_cluster_analysis(K, X_train):\n",
    "    start = time.time()\n",
    "    \n",
    "    print(\"K-means begin with clusters: {}\".format(K))\n",
    "    \n",
    "    mb_kmeans = MiniBatchKMeans(n_clusters = K)\n",
    "    \n",
    "    mb_kmeans.fit(X_train)\n",
    "    \n",
    "    y_pre=mb_kmeans.predict(X_train)\n",
    "    \n",
    "    CH_score = metrics.silhouette_score(X_train,y_pre)\n",
    "    \n",
    "    end = time.time()\n",
    "    \n",
    "    print(\"CH_score: {}, time elaps:{}\".format(CH_score, int(end-start)))\n",
    "    \n",
    "    return CH_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K-means begin with clusters: 10\n",
      "CH_score: 0.3640686243260319, time elaps:7\n",
      "K-means begin with clusters: 20\n",
      "CH_score: 0.25651798607664655, time elaps:6\n",
      "K-means begin with clusters: 30\n",
      "CH_score: 0.1987303670542371, time elaps:6\n",
      "K-means begin with clusters: 40\n",
      "CH_score: 0.1385901376083862, time elaps:5\n",
      "K-means begin with clusters: 50\n",
      "CH_score: 0.1587946381278733, time elaps:6\n",
      "K-means begin with clusters: 60\n",
      "CH_score: 0.10388877441820711, time elaps:5\n",
      "K-means begin with clusters: 70\n",
      "CH_score: 0.10340169658558822, time elaps:6\n",
      "K-means begin with clusters: 80\n",
      "CH_score: 0.0944455857248581, time elaps:5\n",
      "K-means begin with clusters: 90\n",
      "CH_score: 0.06371766497543536, time elaps:6\n",
      "K-means begin with clusters: 100\n",
      "CH_score: 0.07081638023828715, time elaps:6\n"
     ]
    }
   ],
   "source": [
    "Ks=list(range(10,110,10))\n",
    "CH_scores = []\n",
    "for K in Ks:\n",
    "    ch = K_cluster_analysis(K, train)\n",
    "    CH_scores.append(ch)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f80085c1400>]"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(Ks, np.array(CH_scores), 'b-')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从CH评分的结果上来看好像k=10的时候，聚类结果最好，取K=10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_clusters = 10\n",
    "mb_Minikmeans = MiniBatchKMeans(n_clusters = n_clusters)\n",
    "mb_Minikmeans.fit(train)\n",
    "\n",
    "y_train_pred = mb_Minikmeans.labels_\n",
    "cents = mb_Minikmeans.cluster_centers_#质心"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "         c_1        c_2       c_3       c_4       c_5        c_6       c_7  \\\n",
      "0   1.319668   0.931500  0.853140  0.592631  0.554748   1.038921  0.600415   \n",
      "1  10.590000   6.180000  5.030000  3.290000  5.550000  10.360000  2.740000   \n",
      "2   3.414995   2.371700  2.162619  1.411827  1.702218   4.948258  1.304118   \n",
      "3   6.323944   4.035211  4.035211  2.704225  2.781690  10.591549  2.218310   \n",
      "4   2.586420   1.754458  1.613169  1.050069  1.154321   2.657064  1.004115   \n",
      "5   0.407756   0.202937  0.216491  0.157003  0.172440   0.237199  0.104292   \n",
      "6   3.165385   1.003846  0.826923  0.603846  0.850000   1.869231  0.696154   \n",
      "7   9.184397   6.021277  4.900709  3.858156  4.546099   8.836879  2.695035   \n",
      "8   5.378440   3.740826  3.552752  2.256881  2.729358   5.158257  1.832569   \n",
      "9  16.049180  11.672131  9.606557  7.934426  8.672131  16.688525  4.934426   \n",
      "\n",
      "        c_8       c_9      c_10  ...       c_93      c_94      c_95      c_96  \\\n",
      "0  0.361183  0.388168  0.475869  ...   0.049818  0.044110  0.057084  0.025947   \n",
      "1  1.700000  3.300000  1.650000  ...   0.430000  0.280000  0.130000  0.700000   \n",
      "2  0.891235  1.104541  0.895459  ...   0.130940  0.134108  0.110876  0.120380   \n",
      "3  1.704225  1.753521  1.218310  ...   0.359155  0.183099  0.176056  0.161972   \n",
      "4  0.801097  0.735254  0.729767  ...   0.084362  0.112483  0.105624  0.069959   \n",
      "5  0.158133  0.078313  0.097515  ...   0.025602  0.074172  0.009036  0.005648   \n",
      "6  0.376923  0.661538  0.465385  ...   0.053846  0.084615  0.096154  0.019231   \n",
      "7  1.886525  2.666667  1.411348  ...   0.425532  0.276596  0.212766  0.617021   \n",
      "8  1.454128  1.816514  1.158257  ...   0.282110  0.222477  0.121560  0.288991   \n",
      "9  3.163934  6.278689  2.622951  ...   0.639344  0.540984  0.278689  1.180328   \n",
      "\n",
      "       c_97      c_98      c_99     c_100     c_other  类别数目  \n",
      "0  0.061235  0.077322  0.058121  0.043072   33.084587  2275  \n",
      "1  0.320000  0.240000  0.530000  0.200000  276.810000   165  \n",
      "2  0.159451  0.116156  0.117212  0.105597   94.333685  1555  \n",
      "3  0.323944  0.239437  0.211268  0.190141  172.471831   311  \n",
      "4  0.124143  0.102881  0.087106  0.105624   62.660494  1989  \n",
      "5  0.017696  0.022967  0.022967  0.009789    9.175452  4487  \n",
      "6  0.050000  0.069231  0.042308  0.080769   43.815385  1568  \n",
      "7  0.276596  0.127660  0.226950  0.113475  207.049645   242  \n",
      "8  0.256881  0.160550  0.167431  0.194954  133.967890   715  \n",
      "9  0.672131  0.131148  0.196721  0.229508  436.180328   111  \n",
      "\n",
      "[10 rows x 102 columns]\n"
     ]
    }
   ],
   "source": [
    "#简单打印结果\n",
    "r1 = pd.Series(y_train_pred).value_counts() #统计各个类别的数目\n",
    "r2 = pd.DataFrame(cents) #找出聚类中心\n",
    "r = pd.concat([r2, r1], axis = 1) #横向连接（0是纵向），得到聚类中心对应的类别下的数目\n",
    "r.columns = list(train.columns) + [u'类别数目'] #重命名表头\n",
    "#print(r)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "#对训练数据进行降维，方便绘图处理\n",
    "from sklearn.manifold import TSNE\n",
    "tsne = TSNE()\n",
    "tsne.fit_transform(train) #进行数据降维\n",
    "tsne = pd.DataFrame(tsne.embedding_, index = train.index) #转换数据格式"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "p=pd.concat([tsne,pd.Series(y_train_pred, index = tsne.index)],axis =1)\n",
    "p.columns=['x','y','clus']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#取每种类型的前100个数据进行绘图\n",
    "colors = ['b','g','r','k','c','m','y','#e24fff','#524C90','#845868']\n",
    "\n",
    "fig=plt.figure()\n",
    "ax1=fig.add_subplot(111)\n",
    "for i in range(0,9):\n",
    "    d = p[p.clus==i]\n",
    "    d=d[0:100]\n",
    "    ax1.scatter(d['x'], d['y'], c=colors[i])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从结果上看，聚类的效果还不错。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 聚类 K-Means"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.cluster import KMeans\n",
    "\n",
    "def K_Means_analysis(K, X_train):\n",
    "    start = time.time()\n",
    "    \n",
    "    print(\"K-means begin with clusters: {}\".format(K))\n",
    "    \n",
    "    mb_kmeans = KMeans(n_clusters = K)\n",
    "    \n",
    "    mb_kmeans.fit(X_train)\n",
    "    \n",
    "    y_pre=mb_kmeans.predict(X_train)\n",
    "    \n",
    "    CH_score = metrics.silhouette_score(X_train,y_pre)\n",
    "    \n",
    "    end = time.time()\n",
    "    \n",
    "    print(\"CH_score: {}, time elaps:{}\".format(CH_score, int(end-start)))\n",
    "    \n",
    "    return CH_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K-means begin with clusters: 10\n",
      "CH_score: 0.5063668031175472, time elaps:8\n",
      "K-means begin with clusters: 20\n",
      "CH_score: 0.38132748708838465, time elaps:9\n",
      "K-means begin with clusters: 30\n",
      "CH_score: 0.300980301279713, time elaps:10\n",
      "K-means begin with clusters: 40\n",
      "CH_score: 0.2658351676024896, time elaps:12\n",
      "K-means begin with clusters: 50\n",
      "CH_score: 0.24997271692451833, time elaps:13\n",
      "K-means begin with clusters: 60\n",
      "CH_score: 0.21763635640287785, time elaps:13\n",
      "K-means begin with clusters: 70\n",
      "CH_score: 0.17639755251070355, time elaps:15\n",
      "K-means begin with clusters: 80\n",
      "CH_score: 0.18748648974370555, time elaps:15\n",
      "K-means begin with clusters: 90\n",
      "CH_score: 0.1707619547049996, time elaps:20\n",
      "K-means begin with clusters: 100\n",
      "CH_score: 0.16258356197299426, time elaps:18\n"
     ]
    }
   ],
   "source": [
    "Ks_2=list(range(10,110,10))\n",
    "CH_scores_2 = []\n",
    "for K in Ks_2:\n",
    "    ch = K_Means_analysis(K, train)\n",
    "    CH_scores_2.append(ch)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从CH评分上看，用K-Means结果要好于MiniMatch K-Means的结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f7ffb9af080>]"
      ]
     },
     "execution_count": 112,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(Ks_2, np.array(CH_scores_2), 'b-')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_clusters = 10\n",
    "mb_kmeans = KMeans(n_clusters = n_clusters)\n",
    "mb_kmeans.fit(train)\n",
    "\n",
    "y_train_pred_2 = mb_kmeans.labels_\n",
    "cents_2 = mb_kmeans.cluster_centers_#质心\n",
    "\n",
    "p_2=pd.concat([tsne,pd.Series(y_train_pred_2, index = tsne.index)],axis =1)\n",
    "p_2.columns=['x','y','clus']\n",
    "\n",
    "colors = ['b','g','r','k','c','m','y','#e24fff','#524C90','#845868']\n",
    "\n",
    "fig=plt.figure()\n",
    "ax1=fig.add_subplot(111)\n",
    "for i in range(0,9):\n",
    "    d = p_2[p_2.clus==i]\n",
    "    d=d[0:100]\n",
    "    ax1.scatter(d['x'], d['y'], c=colors[i])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "分布的结果图大致类似，不过好像没minimatch的好看，另外试了一下，好像K=5左右的时候聚类效果更好。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
